{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Production Planning\n", "## Problem Definition\n", "PLACASA, a supplier of plastic injection parts for the automobile sector, foresees the demand of an article for the following 4 months of 100, 140, 210 and 180 units, respectively. The firm can maintain only sufficient stock to meet the demand of each month, or it can have excess stock to meet the demand of two successive months or more with a storage cost of 1.2€ per month and unit of excessive stock.\n", "PLACASA calculates that the production cost for the following months, is €15, €12, €10 and €14 per unit. A preparation cost of €200 is incurred every time a production order is placed. The firm wishes to develop a production plan that minimises the total costs of production orders, of production and of keeping an article in stock. Formulate and solve the shortest path model to find an optimum production plan." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solution\n", "We are going to use [networkx] (https://networkx.github.io/) to draw the network and find the shortest path between two nodes. \n", "Each node in the graph is going to represent a production period (one month). Thus, there will be 5 nodes, for month 0 (current month) and the four following months. Edges (i,j) represent the decision to produce in month i all the demand up to month j. For instance, edge 01 means that we decide to manufacture in month 0 100 units, which is the demand in month 1, and 04 means that we decide to manufacture in month 0 100+140+210+180=650 units, which is the demand forecast for the forthcoming 4 months.\n", "To calculate the costs, we need to apply the production cost $cp_i$, storage cost $cs$, and preparation costs $c_P$.\n", "\n", "$c_{ij} = c_P+\\sum_{k=i+1}^{j}d_k·(cp_i+(k-1)·cs)$\n", "\n", "$c_{01} = 200 + \\sum_{k=1}^{1}d_k·(cp_0+(k-1)·cs) = 200 + 100·(15+0·1.2) = 1500$\n", "\n", "$c_{02}= 200 + \\sum_{k=1}^{2}d_k·(cp_0+(k-1)·cs) = 200 + 100·(15+0·1.2) + 140·(15+1·1.2) = 3968$\n", "\n", "...\n", "\n", "$c_{24} = 200 + \\sum_{k=3}^{4}d_k·(cp_2+(k-1)·cs) = 200 + 210·(10+0·1.2) + 180·(10+1·1.2) = 4316$\n", "\n", "$c_{34} = 200 + \\sum_{k=4}^{4}d_k·(cp_2+(k-1)·cs) = 200 + 180·(14+0·1.2) = 2720$\n", "\n", "\n", "\n", "The following code shows the solution in Python." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total cost is: 7896\n", "Shortest path is: [0, 1, 2, 4]\n", "Monthly production is: {0: {'production': 100}, 1: {'production': 140}, 2: {'production': 390}}\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sourcetargetcostproduction
0011700100
1023968240
2037622450
30410970630
4121880140
5134652350
6147028530
7232300210
8244316390
9342720180
\n", "
" ], "text/plain": [ " source target cost production\n", "0 0 1 1700 100\n", "1 0 2 3968 240\n", "2 0 3 7622 450\n", "3 0 4 10970 630\n", "4 1 2 1880 140\n", "5 1 3 4652 350\n", "6 1 4 7028 530\n", "7 2 3 2300 210\n", "8 2 4 4316 390\n", "9 3 4 2720 180" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
production
0100
1140
2390
\n", "
" ], "text/plain": [ " production\n", "0 100\n", "1 140\n", "2 390" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "import networkx as nx\n", "from IPython.display import display, Markdown\n", "\n", "# Create an empty directed graph structure: \n", "G = nx.DiGraph()\n", "\n", "# Add edges and define two attributes, production and costs:\n", "G.add_edges_from([(0,1, {'cost': 1700, 'production': 100}),\n", " (0,2, {'cost': 3968, 'production': 240}),\n", " (0,3, {'cost': 7622, 'production': 450}), \n", " (0,4, {'cost': 10970, 'production': 630}),\n", " (1,2, {'cost': 1880, 'production': 140}),\n", " (1,3, {'cost': 4652, 'production': 350}),\n", " (1,4, {'cost': 7028, 'production': 530}),\n", " (2,3, {'cost': 2300, 'production': 210}),\n", " (2,4, {'cost': 4316, 'production': 390}),\n", " (3,4, {'cost': 2720, 'production': 180}),\n", " ])\n", "\n", "# Draw the directed graph\n", "nx.draw_shell(G, with_labels=True)\n", "\n", "#Calculate the shortest path from 0 to 4, using the attribute cost as edge weight\n", "shortest_path = nx.shortest_path(G, 0, 4, weight=\"cost\")\n", "\n", "# Calculate the production per month, and the total cost using the shortest path solution and the cost attribute\n", "total_cost = 0\n", "production = {}\n", "for i in range(len(shortest_path)-1):\n", " total_cost+=G[shortest_path[i]][shortest_path[i+1]]['cost']\n", " production[i]={'production': G[shortest_path[i]][shortest_path[i+1]]['production']}\n", " \n", "#Print the solution\n", "print(\"Total cost is: \", total_cost)\n", "print(\"Shortest path is:\", shortest_path)\n", "print(\"Monthly production is: \", production)\n", "\n", "edges_df = nx.to_pandas_edgelist(G);\n", "\n", "production = pd.DataFrame.from_dict(production, orient='index')\n", "display(edges_df)\n", "display(production)\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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asr2paOqxzApf1sGXGL/6Y0HM533AN2ziMBch+Hk3XdRJLE28oLLGMyrt8/An6+++orFixczb948mjZtSmxsLL169eLWW28F4xkxCxORl6c4easPYSIU93rpVjs5OXlFRETEORugqpqVMonFbBa+gSnSHIz6npUxtuD7MGahYp46paSkEB5uvqbMcicnJ/8VERFxMV6SgYlIH4zrYXdPnweZkhjbeHr1p2+//ZYZM2bQvHlzrrzySq644grKlfO4b5uRk8ADmE1qSxCwK/KCywX4+P4OHDhAx44d6dKlC+vXr+e9997jk08+oVWrVvTv3z+tWzimtmL1PJA3M02B33wocYDXIjzUesuoDMePH88XX3zh6dhSGC+LlzEPjIFAdG6FdrgGE6SzBeiMWW2eo8TdbjePPfYY9913HxMnmhoPmR8+ERERxZwxvDEdaOPDmyeYPE4Gj6fXXnuNYcOGUalSJaZPn86YMWOYOHEi27ZlGczp9SFnCRChtu3YluPmtWyYquqAAQP0hRde0L/++ku3bdumTZo00ZQUY0pv3bq17tq1K63rGVX9X17LjykP95yPPjXUh515z5492q9fP23cuLFWr15dT5486a1UWhpxamzt76rqhTmUu46qznPGSvY0SUbbcZ8+fbRPnz66bt06veWWW3T48OFeT0fNnoe3a7UcuDOHMue0FVfVExmFbNOmja5fvz7994ULF+oTTzyhrVq10lWrVnk7N1Vz3cvksfxFqtkVecHlG0x03TmcOHGCRYsWMXjwYM4//3yuuOIKihUrxurVpv7uiBEjOHr0aFr3CEzmwSp5ITSkB7y0w3ck4EBMnu5zGDBgAMOGDaN8+fI0bdqURx99FFXl0UcfpWbNmgwbNowzZ87J4lsCYyrojXGLG4NJk+sP9YClmHS6LZyxzjFpHT78T61hVeXvv/+mbdu21K5dmyFDhvD11197W72ej7ke3ghFIrRHyHD9U1JSuPHGG3n11Vf59ddfAbjtttsYMWIEd955J2PHjiU52aN1KAFj2ipoxbILFFaRF1xSMdkEz7H9RkdHU6VKFV544QU2btzIhAkTqFGjBvXrm+pblSpV4sMPP2Tp0qVph0RgFGdecQtwRM/2Fc/IlZi6j2eZVWJjY3nhhRcAGDZsGE2bNmXjxo107NiRadOm0axZM4YMGcLatWvp3LkzJ06c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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "# Draw the directed graph\n", "pos = {0: (28.09, 0.62),\n", " 1: (30, 2.01),\n", " 2: (31.91, 0.62),\n", " 3: (31.18, -1.63),\n", " 4: (28.82, -1.63)\n", " }\n", "\n", "nx.draw_networkx_edges(G, pos)\n", "nx.draw_networkx_nodes(G, pos, node_size=600, node_color='#efefef')\n", "nx.draw_networkx_labels(G, pos, font_weight='bold' )\n", "c_label = nx.get_edge_attributes(G, 'production')\n", "nx.draw_networkx_edge_labels(G, pos, edge_labels=c_label)\n", "plt.axis('equal')\n", "plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Draw the directed graph with colored edges\n", "pos = {0: (28.09, 0.62),\n", " 1: (30, 2.01),\n", " 2: (31.91, 0.62),\n", " 3: (31.18, -1.63),\n", " 4: (28.82, -1.63)\n", " }\n", "red_edges = list(zip(shortest_path,shortest_path[1:]))\n", "edge_col = ['red' if edge in red_edges else 'black' for edge in G.edges()]\n", "nx.draw_networkx_edges(G, pos, edge_color= edge_col)\n", "nx.draw_networkx_nodes(G, pos, node_size=600, node_color='#efefef')\n", "nx.draw_networkx_labels(G, pos, font_weight='bold')\n", "c_label = nx.get_edge_attributes(G, 'production')\n", "nx.draw_networkx_edge_labels(G, pos, edge_labels=c_label)\n", "plt.axis('equal')\n", "plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }